package com.apigen.platform.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 表字段管理实体类
 *
 * @author API Generator
 * @since 2025-09-24
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("gen_table_field")
public class GenTableField {

    /**
     * 字段ID
     */
    @TableId(value = "field_id", type = IdType.ASSIGN_ID)
    private Long fieldId;

    /**
     * 表ID
     */
    @TableField("table_id")
    private Long tableId;

    /**
     * 字段名称
     */
    @TableField("field_name")
    private String fieldName;

    /**
     * 字段类型
     */
    @TableField("field_type")
    private String fieldType;

    /**
     * 字段长度
     */
    @TableField("field_length")
    private Integer fieldLength;

    /**
     * 字段精度
     */
    @TableField("field_precision")
    private Integer fieldPrecision;

    /**
     * 字段小数位
     */
    @TableField("field_scale")
    private Integer fieldScale;

    /**
     * 是否可空
     */
    @TableField("is_nullable")
    private Boolean isNullable;

    /**
     * 是否主键
     */
    @TableField("is_primary_key")
    private Boolean isPrimaryKey;

    /**
     * 是否自增
     */
    @TableField("is_auto_increment")
    private Boolean isAutoIncrement;

    /**
     * 是否唯一
     */
    @TableField("is_unique")
    private Boolean isUnique;

    /**
     * 默认值
     */
    @TableField("default_value")
    private String defaultValue;

    /**
     * 字段注释
     */
    @TableField("field_comment")
    private String fieldComment;

    /**
     * 排序
     */
    @TableField("sort_order")
    private Integer sortOrder;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
